// 导入出配好的axios
import axios from "axios";

// 导入auth模块
import auth from "@/utils/auth";

// 导入路由实例
import router from "@/router";
// 导入json-bigint 最大安全数据
import JSONbig from "json-bigint";

// 配置基准路径
axios.defaults.baseURL = "http://ttapi.research.itcast.cn/mp/v1_0";

// 请求拦截 器
// axios.defaults.headers.Authorization = `Bearer${auth.getUser().token}`;
axios.interceptors.request.use(
  config => {
    // 获取本地token
    const token = auth.getUser().token;
    //   如果有token就追加到请求头
    if (token) config.headers.Authorization = `Bearer ${token}`;

    return config;
  },
  err => Promise.reject(err)
);
// 配置json-bigint响应器转化方式

axios.defaults.transformResponse = [
  data => {
    // data是原始字符串
    try {
      //  异常拦截  正常情况下运转
      // 必须返回转换后的结果
      return JSONbig.parse(data);
    } catch (e) {
      // 失败后返回当前的data
      return data;
    }
  }
];

//响应拦截器
axios.interceptors.response.use(
  res => res,
  err => {
    if (err.response && err.response.staus === 401) {
      //  router可以调用push函数导入 router模块即可
      router.push("/login");
    }
    return Promise.reject(err);
  }
);
export default axios;
